knitr::opts_chunk$set(echo = TRUE)

L’objectif du projet :

Comme des futures Datascientistes, il existe des centaines des questions que nous nous questionne chaque jour. Pour ce là, je vais travaillé sur une dataset des jobs concernant notre domaine de la part de l’entreprise du GLassdor.com

Glassdor.com :

Glassdoor est un site Internet où les employés actuels et anciens employés d’entreprises évaluent leur environnement de travail de manière anonyme

DataSet :

  1. Glassdoor est un site Internet où les employés actuels et anciens employés d’entreprises évaluent leur environnement de travail de manière anonyme

1.A) Description statistique du fichier eda_data :

##        X          Job.Title         Salary.Estimate    Job.Description   
##  Min.   :  0.0   Length:742         Length:742         Length:742        
##  1st Qu.:185.2   Class :character   Class :character   Class :character  
##  Median :370.5   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :370.5                                                           
##  3rd Qu.:555.8                                                           
##  Max.   :741.0                                                           
##      Rating       Company.Name         Location         Headquarters      
##  Min.   :-1.000   Length:742         Length:742         Length:742        
##  1st Qu.: 3.300   Class :character   Class :character   Class :character  
##  Median : 3.700   Mode  :character   Mode  :character   Mode  :character  
##  Mean   : 3.619                                                           
##  3rd Qu.: 4.000                                                           
##  Max.   : 5.000                                                           
##      Size              Founded     Type.of.ownership    Industry        
##  Length:742         Min.   :  -1   Length:742         Length:742        
##  Class :character   1st Qu.:1939   Class :character   Class :character  
##  Mode  :character   Median :1988   Mode  :character   Mode  :character  
##                     Mean   :1837                                        
##                     3rd Qu.:2007                                        
##                     Max.   :2019                                        
##     Sector            Revenue          Competitors            hourly       
##  Length:742         Length:742         Length:742         Min.   :0.00000  
##  Class :character   Class :character   Class :character   1st Qu.:0.00000  
##  Mode  :character   Mode  :character   Mode  :character   Median :0.00000  
##                                                           Mean   :0.03234  
##                                                           3rd Qu.:0.00000  
##                                                           Max.   :1.00000  
##  employer_provided   min_salary       max_salary      avg_salary   
##  Min.   :0.00000   Min.   : 15.00   Min.   : 16.0   Min.   : 13.5  
##  1st Qu.:0.00000   1st Qu.: 52.00   1st Qu.: 96.0   1st Qu.: 73.5  
##  Median :0.00000   Median : 69.50   Median :124.0   Median : 97.5  
##  Mean   :0.02291   Mean   : 74.72   Mean   :128.1   Mean   :100.6  
##  3rd Qu.:0.00000   3rd Qu.: 91.00   3rd Qu.:155.0   3rd Qu.:122.5  
##  Max.   :1.00000   Max.   :202.00   Max.   :306.0   Max.   :254.0  
##  company_txt         job_state           same_state         age        
##  Length:742         Length:742         Min.   :0.000   Min.   : -1.00  
##  Class :character   Class :character   1st Qu.:0.000   1st Qu.: 11.00  
##  Mode  :character   Mode  :character   Median :1.000   Median : 24.00  
##                                        Mean   :0.558   Mean   : 46.59  
##                                        3rd Qu.:1.000   3rd Qu.: 59.00  
##                                        Max.   :1.000   Max.   :276.00  
##    python_yn           R_yn              spark             aws        
##  Min.   :0.0000   Min.   :0.000000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.000000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :1.0000   Median :0.000000   Median :0.0000   Median :0.0000  
##  Mean   :0.5283   Mean   :0.002695   Mean   :0.2251   Mean   :0.2372  
##  3rd Qu.:1.0000   3rd Qu.:0.000000   3rd Qu.:0.0000   3rd Qu.:0.0000  
##  Max.   :1.0000   Max.   :1.000000   Max.   :1.0000   Max.   :1.0000  
##      excel          job_simp          seniority            desc_len    
##  Min.   :0.0000   Length:742         Length:742         Min.   :  407  
##  1st Qu.:0.0000   Class :character   Class :character   1st Qu.: 2801  
##  Median :1.0000   Mode  :character   Mode  :character   Median : 3731  
##  Mean   :0.5229                                         Mean   : 3870  
##  3rd Qu.:1.0000                                         3rd Qu.: 4740  
##  Max.   :1.0000                                         Max.   :10051  
##     num_comp    
##  Min.   :0.000  
##  1st Qu.:0.000  
##  Median :0.000  
##  Mean   :1.054  
##  3rd Qu.:3.000  
##  Max.   :4.000
##                 X         Job.Title   Salary.Estimate   Job.Description 
##         "integer"       "character"       "character"       "character" 
##            Rating      Company.Name          Location      Headquarters 
##         "numeric"       "character"       "character"       "character" 
##              Size           Founded Type.of.ownership          Industry 
##       "character"         "integer"       "character"       "character" 
##            Sector           Revenue       Competitors            hourly 
##       "character"       "character"       "character"         "integer" 
## employer_provided        min_salary        max_salary        avg_salary 
##         "integer"         "integer"         "integer"         "numeric" 
##       company_txt         job_state        same_state               age 
##       "character"       "character"         "integer"         "integer" 
##         python_yn              R_yn             spark               aws 
##         "integer"         "integer"         "integer"         "integer" 
##             excel          job_simp         seniority          desc_len 
##         "integer"       "character"       "character"         "integer" 
##          num_comp 
##         "integer"

1.B) Quelques ligne du fichier eda_data :

  1. glassdoor_jobs.txt La dataset des emplois de Glassdoor contient les offres d’emploi de Glassdoor.com de 2017 à 2018. Cet ensemble de données comprend des caractéristiques comme le titre du poste, l’estimation du salaire, la description de poste, la cote, le nom de l’entreprise, l’emplacement, le siège social, la taille, la société fondée, le type de propriété, l’industrie, le secteur, les revenus, les concurrents, et dresse une liste des caractéristiques les plus importantes de cet ensemble de données. , les salaires horaires minima et maxima,, avgsalary,, numcomp,,sdesc_len Si vous cherchez un emploi dans le domaine de la science des données, alors c’est l’ensemble de données que vous pouvez explorer!

2.A) Description statistique du fichier glassdoor_jobs :

## Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
## Fin de fichier (EOF) dans une chaîne de caractères entre guillements
##       X              Job.Title         Salary.Estimate    Job.Description   
##  Length:15538       Length:15538       Length:15538       Length:15538      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##     Rating          Company.Name         Location         Headquarters      
##  Length:15538       Length:15538       Length:15538       Length:15538      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##      Size             Founded          Type.of.ownership    Industry        
##  Length:15538       Length:15538       Length:15538       Length:15538      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##     Sector            Revenue          Competitors       
##  Length:15538       Length:15538       Length:15538      
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character

2.B) Quelques ligne du fichier glassdoor_jobs :

##                 X         Job.Title   Salary.Estimate   Job.Description 
##       "character"       "character"       "character"       "character" 
##            Rating      Company.Name          Location      Headquarters 
##       "character"       "character"       "character"       "character" 
##              Size           Founded Type.of.ownership          Industry 
##       "character"       "character"       "character"       "character" 
##            Sector           Revenue       Competitors 
##       "character"       "character"       "character"

Le Preprocessing

  • Dans le Preprocessing, il existe plusieurs étape à faire lequel :
    • Data quality assessment
    • Data cleaning
    • Data transformation
    • Data reduction
  1. Data Quality Assessment :

1.A) Data Quality Assessment pour le fichier eda_data :

RQ :

  • l’utilité du champ est trouvé entre 1 et 3

  • 1 : n’est pas utile

  • 2 : utile mais demande une manipulation

  • 3 : utile

    – Taux de manipulation est trouvé aussi entre 1 et 3

  • 1 : ne demande pas de manipulation

  • 2 : demande un peu de manipulation

  • 3 : demande beaucoup de manipulation

Nom du champ Description du champ Utilité du champ Taux de manipulation
X Identificateur unique de l’offre d’emploi (numérique) 3 1
job_state L’état où se trouve le travail (chaîne) 3 1
same_state Indicateur binaire indiquant si l’emploi est dans le même état que la personne qui regarde l’emploi (chaîne) 1 1
Age l’âge de la personne qui examine l’emploi (numérique) 3 1
python_yn Indicateur binaire indiquant si la personne qui regarde le travail connaît Python (String) 3 1
R_yn Indicateur binaire indiquant si la personne qui regarde le poste connaît R (chaîne de caractères) 3 1
spark Un indicateur binaire de si la personne qui regarde le travail sait Spark (String) 1 1
aws Un indicateur binaire permettant de savoir si la personne qui regarde le travail connaît AWS (chaîne) 1 1
excel Indicateur binaire indiquant si la personne qui regarde le travail connaît Excel (chaîne) 1 1
job_simp Titre du poste simplifié (chaîne de caractères) 3 1
seniority L’ancienneté du poste (chaîne) 3 1
desc_len La durée de la description de poste (numérique) 1 1
num_comp Le nombre de concurrents pour le poste (numérique) 1 1

1.) 1.B) Data Quality Assessment pour le fichier glassdoor_jobs :

RQ :

  • l’utilité du champ est trouvé entre 1 et 3

  • 1 : n’est pas utile

  • 2 : utile mais demande une manipulation

  • 3 : utile

    – Taux de manipulation est trouvé aussi entre 1 et 3

  • 1 : ne demande pas de manipulation

  • 2 : demande un peu de manipulation

  • 3 : demande beaucoup de manipulation

Nom du champ Description du champ Utilité du champ Taux de manipulation
X l’identificateur unique de chaque job 3 1
Job Title le titre de chaque job 3 1
Salary Estimate l’estimation du chaque salaire par intervalle 2 2
Job Description Description profondue du chaque offre d’emploi 1 1
Rating le rating de chaque emploi 3 1
Company Name le nom du chaque entreprise 3 1
Location le local du chaque entreprise qui a posté l’offre d’emploi 3 1
Headquarter Le local de chaque siège des entreprises 3 1
Size le taille de l’entreprise 3 1
Founded Date de lancement de l’entreprise 3 1
  1. Data Cleaning et transformation des données :

2.A) Data cleaning du fichier eda_data et transformation de ses données :

2.A.1) supprimer les lignes nuls d’eda_data:

library(tidyr)
## Warning: le package 'tidyr' a été compilé avec la version R 4.2.2
eda_data %>% drop_na()

2.A.2) Nous souhaitons travaillé sur les datascientists donc notre étape suivante et d’extracter les offres d’emplois des data scientistes seulement

eda_data_cleaned = eda_data[eda_data$job_simp=='data scientist',]
eda_data_cleaned

2.A.3) Après le cleaning du dataset nous devons maintenant choisir les colonnes que nous allons travaillés avec elles :

NB : Nous allons choisir nos colonnes basant sur le data quality assessment du dataframe eda_data_cleaned :

## Warning: le package 'dplyr' a été compilé avec la version R 4.2.2
## 
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
## 
##     filter, lag
## Les objets suivants sont masqués depuis 'package:base':
## 
##     intersect, setdiff, setequal, union

2.A.4) Conclusion :

Maintenant , Après le data cleaning du eda_data nous devons faire le memes étapes avec le fichier glassdoor jobs

2.B) Data cleaning du fichier Glassdoor Jobs :

2.B.1) supprimer les lignes nuls d’eda_data:

##  [1] "X"                 "Job.Title"         "Salary.Estimate"  
##  [4] "Job.Description"   "Rating"            "Company.Name"     
##  [7] "Location"          "Headquarters"      "Size"             
## [10] "Founded"           "Type.of.ownership" "Industry"         
## [13] "Sector"            "Revenue"           "Competitors"

2.B.2) Le fichier glassdoor_jobs est un fichier txt. Alors tous ses champs vont etre des champs de types caractères, mais il existe des champs du type numeric ou double donc l’étape suivante est de transformer ses champs là

## Warning: NAs introduits lors de la conversion automatique

## Warning: NAs introduits lors de la conversion automatique

## Warning: NAs introduits lors de la conversion automatique

2.B.3) Choisir les colonnes nécessaires :

2.B.4) Conclusion :

Après la manipulation des données du fichier glassdoor_jobs nous nous devons faire le matching entre les deux fichiers

2.C) Matching entre les deux ensembles des données :

new_data_frame = merge(eda_data_chosen,glassdoor_jobs_chosen,by.x='X',by.y = 'X', all.x = T, no.dup = T)
new_data_frame
  1. Data reduction :

Notre ensemble de données après les manipuations nécessaires a diminiué sa taille donc nous nous sommes dans le besoin de faire le data reduction, nous pouvons voir ci-dessous le taille de notre nouveau dataset :

## [1] 284
  1. La visualisation des données :

Après la manipulation de notre jeu de données , nous sommes maintenant capables une série des plots :

  • Les minimumes salaires par pays

  • Les maximumes salaires par pays

  • les salaires moyennes par secteurs

  • la différence des salaire entre les personnes qui connait le langage python ou non

  • la différence des salaire entre les personnes qui connait le langage R ou non

4.A) Les salaires minimale par pays :

library(ggplot2)
## Warning: le package 'ggplot2' a été compilé avec la version R 4.2.2
ggplot(data=new_data_frame, aes(x=Loc2,y = min_salary)) +
  geom_point()+
  labs(title="Les salaire minimumes par pays",x="Les pays", y = "en $")

4.B) Les salaires maximales par pays :

library(ggplot2)
ggplot(data=new_data_frame, aes(x=Loc2,y = max_salary)) +
  geom_point()+
  labs(title="Les salaire maximales par pays",x="Les pays", y = "en $")

4.C) : Les salaires moyennes par secteur :

library(ggplot2)
p <- ggplot(data=new_data_frame, aes( x=avg_salary,y=Loc2)) +
  geom_bar(stat = "identity")
p

4.D) la différence des salaire entre les personnes qui connait la langage python ou non:

library(gapminder)
## Warning: le package 'gapminder' a été compilé avec la version R 4.2.2
library(patchwork)
## Warning: le package 'patchwork' a été compilé avec la version R 4.2.2
p <- ggplot(data=new_data_frame, aes( x=avg_salary,fill = python_yn )) 
p <- p +geom_area(aes(y = avg_salary))
p <- p +theme_minimal()
p

4.D) la différence des salaire entre les personnes qui connait la langage R ou non:

p <- ggplot(data=new_data_frame, aes( x=avg_salary,fill = R_yn )) 
p <- p +geom_area(aes(y = avg_salary))
p <- p +theme_minimal()
p

##Conclusion Les salaires des datascientistes sont très important et diffèrent avec une marge importante aussi. Nous avons trouvé d’après nos graphes que pour être payer mieux tu dois viser un secteur spécialisé dans l’informatique.